#ifndef __FILTER_H
#define __FILTER_H

#include "BasicTypes.h"
#include <string>
#include <memory>

class Tree;

struct InvalidFilterInfo
{
	int errorCode;
	int errorPosition;
	const char * errorMsg;
};

class IFilter
{
public:
	virtual ~IFilter() {};
	virtual bool Match( const Tree & tree ) const = 0;
	static std::auto_ptr<IFilter> Create( FilterType type, const std::string & data );
};

#endif //__FILTER_H